﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Configuration;
using Microsoft.ApplicationBlocks.Data;
using Entities;

namespace DAL
{
    public class CategoriaDAL
    {
        static string strCadenaConexion = System.Configuration.ConfigurationManager.ConnectionStrings["ConexionBaseDesarrollo"].ConnectionString;

        public static long Nuevo(Categoria parCategoria)
        {
            long longRetorno = 0;
            try
            {
                long.Parse(SqlHelper.ExecuteScalar(strCadenaConexion, "spCategoriaNuevo", parCategoria.Nombre, parCategoria.Descripcion).ToString());
                return longRetorno;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void Modificar(Categoria parCategoria)
        {
            try
            {
                SqlHelper.ExecuteNonQuery(strCadenaConexion, "spCategoriaModificar", parCategoria.IDCategoria, parCategoria.Nombre, parCategoria.Descripcion);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void Eliminar(long parIDCategoria)
        {
            try
            {
                SqlHelper.ExecuteNonQuery(strCadenaConexion, "spCategoriaEliminar", parIDCategoria);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static Categoria ObtenerUno(long parIDCategoria)
        {
            try
            {
                Categoria oCategoria = new Categoria();
                DataTable dt = new DataTable();
                dt = SqlHelper.ExecuteDataset(strCadenaConexion, "spCategoriaObtenerUno", parIDCategoria).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    oCategoria.IDCategoria = long.Parse(dt.Rows[0]["IDCategoria"].ToString());
                    oCategoria.Nombre = dt.Rows[0]["Nombre"].ToString();
                    oCategoria.Descripcion = dt.Rows[0]["Descripcion"].ToString();
                }
                return oCategoria;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static List<Categoria> ObtenerTodos()
        {
            try
            {
                List<Categoria> ListaCategorias = new List<Categoria>();
                DataTable dt = new DataTable();
                dt = SqlHelper.ExecuteDataset(strCadenaConexion, "spCategoriaObtenerTodos").Tables[0];
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        Categoria oCategoria = new Categoria();
                        oCategoria.IDCategoria = long.Parse(dr["IDCategoria"].ToString());
                        oCategoria.Nombre = dr["Nombre"].ToString();
                        oCategoria.Descripcion = dr["Descripcion"].ToString();
                        ListaCategorias.Add(oCategoria);
                    }
                }
                return ListaCategorias;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
